#pragma once

namespace NBE
{
	struct Vertex
	{
		Point3 pos;
		Point2 uv;
		Point3 normal;
		Point4 color;

	};


	struct TexMap
	{
		INT64 texMapFileName;// char*
		int texMapSlot;//means type like diffuse or ambient
		INT64 data;//pointer to data
		unsigned int dataSize;

		unsigned int w,h;

	};

	struct Material
	{
		INT64 matName;//char*
		int texMapVecSize;
		INT64 texMapVec;//TexMap*
	};

	struct Batch
	{
		INT64 pMtl;//Material*
		unsigned int startIndex;
		unsigned int size;
	};

	struct Object
	{
		Object():batchNum(0)
		{}

		INT64 parent;//Object*
		INT64 objectName;//char*
		int batchNum;
		INT64 batchVec;//Batch*
		GMatrix localTM;

		unsigned int VertexNum, IndexNum;
		INT64 verticesList;//Vertex*
		INT64 indicesList;//unsigned int*
		int vboID;
		int iboID;

	};

	struct Mesh
	{
		int objectNum;
		INT64 objectArray;//Object*
		int materialNum;
		INT64 matArray;//Material*
		//smallest sphere
		Point3 center;
		float radius;
	};

}